//
//  RLMRealmDataBaseTools.m
//  JKOCRealm
//
//  Created by 王冲 on 2019/2/27.
//  Copyright © 2019年 JK科技有限公司. All rights reserved.
//

#import "RLMRealmDataBaseTools.h"
#import <Realm/Realm.h>

@implementation RLMRealmDataBaseTools

+(void)setRealmDefaultRealmForUserDatabaseName:(NSString *)databaseName{
        
    RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
        // 使用默认的目录，但是使用用户名来替换默认的文件名
    config.fileURL = [[[config.fileURL URLByDeletingLastPathComponent]                      URLByAppendingPathComponent:databaseName]                      URLByAppendingPathExtension:@"realm"];
        // 将这个配置应用到默认的 Realm 数据库当中
    [RLMRealmConfiguration setDefaultConfiguration:config];
    
}
    
+(void)setRealmDefaultRealmReadOnly{
    
    RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
    // 以只读模式打开文件，因为应用数据包并不可写
    config.readOnly = YES;
    
    [RLMRealmConfiguration setDefaultConfiguration:config];
}

+(void)deleteRealmDatabaseName:(NSString *)databaseName{
    
    [self setRealmDefaultRealmForUserDatabaseName:databaseName];
    
    NSFileManager *manager = [NSFileManager defaultManager];
    RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
    NSArray<NSURL *> *realmFileURLs = @[
                                        config.fileURL,
                                        [config.fileURL URLByAppendingPathExtension:@"lock"],
                                        [config.fileURL URLByAppendingPathExtension:@"management"],
                                        ];
    for (NSURL *URL in realmFileURLs) {
        NSError *error = nil;
        [manager removeItemAtURL:URL error:&error];
        if (error) {
            // 处理错误
        }
    }
}
    
+(void)databaseMigration:(int)newVersion{
    
    // 1. 获取默认配置
    RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
    
    // 2. 叠加版本号(要比上一次的版本号高) 0
    config.schemaVersion = newVersion;
    
    // 3. 具体怎样迁移
    [config setMigrationBlock:^(RLMMigration *migration, uint64_t oldSchemaVersion) {
        
        //什么都不要做！Realm 会自行检测新增和需要移除的属性，然后自动更新硬盘上的数据库架构
        if (oldSchemaVersion < newVersion) {
    
                NSLog(@"需要做迁移动作");
                
                //执行更名动作
                // [migration renamePropertyForClass:@"Migration" oldName:@"fullName" newName:@"fullName2"];
                
                // 无需做任何事情, 就可以完成, 数据结构, 以及数据的迁移
//                [migration enumerateObjects:@"Migration" block:^(RLMObject * _Nullable oldObject, RLMObject * _Nullable newObject) {
//
//                    newObject[@"fullName"] = [NSString stringWithFormat:@"%@%@", oldObject[@"preName"], oldObject[@"lastName"]];
//                }];
        }
        
     }];
    
    // 4. 让配置生效
    [RLMRealmConfiguration setDefaultConfiguration:config];
    
    // 如果需要立即迁移
    [RLMRealm defaultRealm];
    
}
    
@end
